﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Classes.Banco;
using System.Data;

namespace Classes.Administrativo
{
    public class clsUsuario: clsBanco
    {
        public bool ValidaUsuario(clsUsuarioTO u)
        {
            try
            {
                if (u.Login == string.Empty)
                {
                    return false;
                }
                else
                {
                    Sql.Parameters.Clear();
                    Sql.CommandText = @"SELECT COUNT(*) FROM USUARIO WHERE USU_LOGIN = @LOGIN" 
                    + " AND USU_SENHA = @SENHA";

                    Sql.Parameters.Add("@LOGIN", u.Login);
                    Sql.Parameters.Add("@SENHA", u.Senha);

                    if (RetornaDados().Rows[0][0].ToString() == "1")
                        return true;
                    else 
                        return false;
                }
            }
            catch (Exception ex)
            {
                return false;
            }

        }

        public bool Gravar(clsUsuarioTO u)
        {
            try
            {
                if (u.Codigo > 0)
                {
                    //Insert
                    Sql.Parameters.Clear();
                    Sql.CommandText = "INSERT INTO usuario (" +
                                       "usu_login," +
                                       "usu_senha," +
                                       "usu_nome," +
                                       "usu_email," +
                                       "usu_dt_cadastro," +
                                       "usu_alt_senha," +
                                       "usu_status" +
                                       ") VALUES (" +
                                       "@login" +
                                       "@senha," +
                                       "@nome," +
                                       "@email," +
                                       "@dtcadastro," +
                                       "@altsenha," +
                                       "@status)";
                }
                else
                {
                    //Alterar
                    Sql.Parameters.Clear();
                    Sql.CommandText = "UPDATE usuario SET " +
                    "usu_login = @login," +
                    "usu_senha = @senha," +
                    "usu_nome = @nome," +
                    "usu_email = @email," +
                    "usu_dt_cadastro = @dtcadastro," +
                    "usu_alt_senha = @altsenha," +
                    "usu_status = @status" +
                    " WHERE usu_codigo = @codigo";

                    Sql.Parameters.Add("@codigo", u.Codigo);
                }

                Sql.Parameters.Add("@login", u.Login);
                Sql.Parameters.Add("@senha", u.Senha);
                Sql.Parameters.Add("@email", u.Email);
                Sql.Parameters.Add("@dtcadastro", u.DtCadastro);
                Sql.Parameters.Add("@altsenha", u.AlteraSenha);
                Sql.Parameters.Add("@status", u.Status);

                ExecultaComando();

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool RetornaUsuario(clsUsuarioTO u)
        {
            DataTable dt;
            try
            {
                if (u.Login == string.Empty)
                {
                    return false;
                }
                else
                {
                    Sql.Parameters.Clear();
                    Sql.CommandText = @"SELECT COUNT(*) FROM USUARIO WHERE USU_CODIGO = @CODIGO";

                    Sql.Parameters.Add("@codigo", u.Codigo);

                    dt = RetornaDados();
                    if (dt.Rows.Count > 0)
                    {
                        u.Login = dt.Rows[0]["usu_login"].ToString();
                        u.Senha = dt.Rows[0]["usu_login"].ToString();
                        u.Nome = dt.Rows[0]["usu_login"].ToString();
                        u.Email = dt.Rows[0]["usu_login"].ToString();
                        u.DtCadastro = Convert.ToDateTime(dt.Rows[0]["usu_login"].ToString());
                        u.AlteraSenha = Convert.ToBoolean(dt.Rows[0]["usu_alt_senha"]);
                        u.Status = Convert.ToBoolean(dt.Rows[0]["usu_status"]);

                        return true;
                    }
                    else
                        return false;
                }
            }
            catch (Exception)
            {
                return false;
            }

        }

        public DataTable RetornaMenu(int cod_usuario)
        {
            try
            {
                Sql.Parameters.Clear();
                Sql.CommandText = " SELECT MNU_DESCRICAO, MNU_NIVEL1, MNU_NIVEL2, MNU_NIVEL3 FROM MENU_USUARIO MU"
                                + " INNER JOIN MENU M ON MU.MNU_CODIGO = M.MNU_CODIGO AND M.MNU_STATUS = 1"
                                + " WHERE MU.USU_CODIGO = " + cod_usuario
                                + " ORDER BY M.MNU_NIVEL1, M.MNU_NIVEL2, M.MNU_NIVEL3";

                return RetornaDados();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
